package com.carlinfo.shop.goods.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.carlinfo.shop.common.util.PageInfoUtil;
import com.carlinfo.shop.goods.pojo.AGoods;
import com.carlinfo.shop.goods.pojo.AGoodsBrand;
import com.carlinfo.shop.goods.pojo.AGoodsCate;
import com.carlinfo.shop.goods.pojo.AUsersCar;

/**
 * 商品的Service
 * @author wangshMac
 *
 */
public interface IGoodsService
{
	/* == 商品品牌操作开始 == */
	/**
	 * 保存一条商品品牌
	 * @param goodsBrand
	 * @return
		{
			// 响应码
			"code":"0",
			// 响应信息
			"info":"",
			// 数据
			"data":
			{
				// 影响条数;sql执行以后对数据库的影响条数
				"effect":"",
				// id,保存的时候要主键
				"id":""
			}
		}
	 */
	JSONObject saveOneGoodsBrandService(AGoodsBrand goodsBrand);
	
	/**
	 * 更新一条商品品牌
	 * @param goodsBrand
	 * @return
	 */
	JSONObject updateOneGoodsBrandService(AGoodsBrand goodsBrand);
	
	/**
	 * 更新一条商品品牌+上传文件
	 * @param goodsBrand
	 * @param condMap fileName:上传文件的名字;InputStream:复制文件,输入流
	 * @return
	 */
	JSONObject updateOneGoodsBrandService(AGoodsBrand goodsBrand,Map<String, Object> condMap) throws Exception;
	
	/**
	 * 删除一条商品品牌
	 * @param condMap
	 * @return
	 */
	JSONObject deleteOneGoodsBrandService(Map<String, Object> condMap);
	
	/**
	 * 查询一条商品品牌
	 * @param condMap
	 * @return
	 */
	AGoodsBrand findOneGoodsBrandService(Map<String, Object> condMap);
	
	/**
	 * 查询多条商品品牌
	 * @param condMap
	 * @return
	 */
	Map<String, Object> findCondListGoodsBrandService(PageInfoUtil pageInfoUtil,Map<String, Object> condMap);
	/* == 商品品牌操作结束 == */
	
	/*---- 商品分类操作开始 ----*/
	/**
	 * 保存一条商品分类
	 * @param goodsCate	保存的对象
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject saveOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 更新一条商品分类
	 * @param goodsCate
	 * @return
	 */
	JSONObject updateOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 删除一条商品分类
	 * @param goodsCate
	 * @return
	 */
	JSONObject deleteOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 查询一条商品分类
	 * @param condMap	查询条件
	 * @return	返回商品分类
	 */
	AGoodsCate findOneGoodsCateService(Map<String, Object> condMap);
	
	/**
	 * 查询多条商品分类
	 * @param pageInfoUtil	分页对象:如果为null,不分页,如果不为空,分页
	 * @param condMap	查询条件
	 * @return	返回多条记录
	 */
	Map<String, Object> findCondListGoodsCateService(PageInfoUtil pageInfoUtil,Map<String, Object> condMap);
	
	/**
	 * 查询所有节点的树形结构
	 * @return
	 * 返回所有的节点(树形结构)
	 */
	List<AGoodsCate> findTreeListGoodsCateService();
	/*---- 商品分类操作结束 ----*/
	
	/*---- 商品操作开始 ----*/
	/**
	 * 保存一条商品
	 * @param goods	保存的对象
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject saveOneGoodsService(AGoods goods);
	
	/**
	 * 保存一条商品
	 * @param goods	保存的对象
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject saveOneGoodsService(AGoods goods,Map<String, Object> paramsMap);
	
	/**
	 * 更新一条商品
	 * @param goods
	 * @return
	 */
	JSONObject updateOneGoodsService(AGoods goods);
	
	/**
	 * 删除一条商品
	 * @param goods
	 * @return
	 */
	JSONObject deleteOneGoodsService(AGoods goods);
	
	/**
	 * 查询一条商品
	 * @param condMap	查询条件
	 * @return	返回商品
	 */
	AGoods findOneGoodsService(Map<String, Object> condMap);
	
	/**
	 * 查询多条商品
	 * @param pageInfoUtil	分页对象:如果为null,不分页,如果不为空,分页
	 * @param condMap	查询条件
	 * @return	返回多条记录
	 */
	Map<String, Object> findCondListGoodsService(PageInfoUtil pageInfoUtil,Map<String, Object> condMap);
	
	/** 商品的统计 */
	Map<String, Object> statGoodsService(PageInfoUtil pageInfoUtil,Map<String, Object> condMap);
	/*---- 商品操作结束 ----*/
	
	/*---- 购物车操作开始 ----*/
	/**
	 * 保存一条购物车
	 * 
	 * @param usersCar
	 *            保存的对象
	 * @return json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject saveOneUsersCarService(AUsersCar usersCar);

	/**
	 * 更新一条购物车
	 * 
	 * @param usersCar
	 * @return
	 */
	JSONObject updateOneUsersCarService(AUsersCar usersCar);

	/**
	 * 删除一条购物车
	 * 
	 * @param usersCar
	 * @return
	 */
	JSONObject deleteOneUsersCarService(AUsersCar usersCar);

	/**
	 * 查询一条购物车
	 * 
	 * @param condMap
	 *            查询条件
	 * @return 返回购物车
	 */
	AUsersCar findOneUsersCarService(Map<String, Object> condMap);

	/**
	 * 查询多条购物车
	 * 
	 * @param pageInfoUtil
	 *            分页对象:如果为null,不分页,如果不为空,分页
	 * @param condMap
	 *            查询条件
	 * @return 返回多条记录
	 */
	Map<String, Object> findCondListUsersCarService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);
	/*---- 购物车操作结束 ----*/
}
